home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Turnbull China Bikeride
/
Turnbull China Bikeride - Disc 2.iso
/
BARNET
/
FREENET
/
JONES
/
LOGIN
/
s
/
sysvars
< prev
Wrap
Text File
|
1995-08-29
|
1KB
|
80 lines
; vi:ts=8:sw=8:nosi:ai
;
; Copyright (C) 1994 Alun Jones, auj@aber.ac.uk
;
; This source code is freeware.
;
; Simple library for handling system variables.
;
.PROC setenv ; (char *var, char *val)
STMFD R13!, {R4}
MOV R2, #0
len LDRB R3, [R0, R2]
ADD R2, R2, #1
CMP R3, #0
BNE len
SUB R2, R2, #1
MOV R3, #0
MOV R4, #0
SWI XOS_SetVarVal
MOVVC R0, #0
LDMFD R13!, {R4}
MOVS PC, R14
.PROC readonly ; (char *var, char *val)
STMFD R13!, {R4}
ADR R2, buffer
MOV R4, #0
loop LDRB R3, [R1], #1
STRB R3, [R2], #1
CMP R3, #0
BNE loop
ADR R1, code ; Code start ptr
SUB R2, R2, R1 ; Length of code and buffer
MOV R3, #0 ; Context ptr
MOV R4, #10 ; Code variable
SWI XOS_SetVarVal
MOVVC R0, #0
LDMFD R13!, {R4}
MOVS PC, R14
code B write ; Branch to code write
read STMFD R13!, {R1,R3, R14}
ADR R0, buffer
MOV R2, R0
count LDRB R1, [R2], #1
CMP R1, #" "
BGE count
SUB R2, R2, #1
SUB R2, R2, R0
LDMFD R13!, {R1,R3, PC}
write
ORR R14, R14, #10000000
ADR R0, ErrMess
MOVS PC, R14
LDMFD R13!, {PC}
ErrMess .WORD 0
.STRING "Variable is readonly"
endcode
buffer .BLOCK 100, 0
.ALIGN
.PROC writeable ; (char *name)
STMFD R13!, {R4}
MOV R0, R1 ; Variable name ptr
MVN R2, #0 ; -1 to delete variable
MOV R3, #0
MOV R4, #10
SWI XOS_SetVarVal
MOVVC R0, #0
LDMFD R13!, {R4}
MOVS PC, R14
.END